home *** CD-ROM | disk | FTP | other *** search
- #include <egb.h>
- #include <fmc.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <math.h>
- #include <mos.h>
- #include <snd.h>
- #include "oaklib.h"
- #include "cons.h"
- #include "dabe.h"
-
-
- char sndwork[16384];
- char work[1536];
- char swork[1024];
- char mwork[4096];
- char fwork[8192];
- char para[4096];
- char komdata[6][512];
- short komsize;
- short cardsize;
- char mosread_data[25][70];
- char carddata[6][1024];
- short datalen[1000];
- short soundflag;
- short putxsize;
- short putysize;
- char fenv[64];
- char drive[4];
- char path[32];
-
- int ox = 600, oy = 20;
- int event1_x, event1_y;
- int event2_x, event2_y;
- int event3_x, event3_y;
- int botton_x = 37 * 16, botton_y[12];
- short putcard_line[6];
- short INS_STAT = OFF;
-
- void main()
- {
- init();
- main2();
- }
-
-
- void main2()
- {
- while(1){
- switch(start()){
- case 1: look();
- break;
- case 2: fshinki();
- break;
- case 3: fsakujyo();
- break;
- case 4: getdrive();
- break;
- case 5: getpath();
- break;
- case 6: end();
- break;
- default:
- break;
- }
- }
- }
-
- short start()
- {
- short ret;
- char msg[7][22] = {"Menu", "データファイル閲覧", "データファイル作成",
- "データファイル削除", "ドライブ変更", "パス変更", "GoodBye"};
-
- ret = MOS_read(3, 3.5, 6, msg[0], 22, page0, NEW );
-
- return ret;
- }
-
- void getdrive()
- {
- FILE *fp;
- char msg[19][18] = {"","A","B","C","D","E","F","G",
- "H","I","J","K","L","M","N","O","P","Q",
- "R"};
- char drv[18][3] = {"a:","b:","c:","d:","e:","f:","g:","h:","i:","j:",
- "k:","l:","m:","n:","o:","p:","q:","r:"};
- short drvnum;
- short ret;
-
- drvnum = 0;
- while( ( drvnum <= 17 ) && ( strcmp( drive, drv[drvnum] ) != 0 ) )
- drvnum++;
- strcpy( msg[ 0 ], "現在のドライブ:" );
- strcat( msg[ 0 ], msg[ drvnum + 1 ] );
-
- ret = MOS_read(6, 1.5, 18, msg[ 0 ], 18, page0, NEW );
-
- if( ret > 0 )
- strcpy( drive, drv[ ret - 1 ] );
- else {
- strcpy( swork, "ドライブは" );
- strcat( swork, msg[ drvnum + 1 ] );
- strcat( swork, "のままです" );
- putmessage( swork );
- return;
- }
-
- if( ( fp = fopen( fenv, "w" ) ) != NULL ){
- fputx( drive, fp );
- fputx( path, fp );
- fclose( fp );
- strcpy( swork, "ドライブを" );
- drvnum = 0;
- while( ( drvnum <= 17 ) && ( strcmp( drive, drv[drvnum] ) != 0 ) )
- drvnum++;
- strcat( swork, msg[ drvnum + 1 ] );
- strcat( swork, "に変更しました" );
- putmessage( swork );
- } else
- puterror( "変更ドライブのファイル保存に失敗しました" );
- }
-
- void getpath()
- {
- char pathname[64];
- FILE *fp;
- short oakret;
-
- strcpy( swork, "現在のパス名:" );
- strcat( swork, path );
- g_wintitle(6, 31, 8, TITCOL, UTICOL, DTICOL, TCHCOL, swork, page0, SOUND_ON );
- g_winbox(6, 9, 31, 13, BOXCOL, UBXCOL, DBXCOL);
- g_put_endicn( 7, 11.5 );
- strcpy(swork, "パス名");
- g_putchr(7, 10, CHRCOL, swork);
-
- /* パス名の入力 */
- oakret = oakn(11, 10, 30, 1, pathname);
-
- if( oakret == BREAK ){
- g_rput_endicn( 7, 11.5 );
- putmessage( "パス名変更を中止します" );
- return;
- }
-
- if( strlen( pathname ) > 0 ){
- if( *(pathname + 0) == 0x5C )
- strcpy( path, pathname );
- else {
- strcpy( swork, "パス名は¥から入力してください" );
- puterror( swork );
- return;
- }
- } else {
- strcpy( swork, "パス名は" );
- strcat( swork, path );
- strcat( swork, "のままです" );
- putmessage( swork );
-
- return;
- }
-
- if( ( fp = fopen( fenv, "w" ) ) != NULL ){
- fputx( drive, fp );
- fputx( path, fp );
- fclose( fp );
- strcpy( swork, "パス名を" );
- strcat( swork, path );
- strcat( swork, "に変更しました" );
- putmessage( swork );
- } else
- puterror( "変更パス名のファイル保存に失敗しました" );
-
- }
-
- void look()
- {
- char filename[128];
-
- char *pkn;
-
- char *pcd;
-
- char *ppd;
-
- short pagenum;
- short readnum;
- short cardnum;
-
- long offset;
-
- short i, j, k, ret, start;
- FILE *fp;
- short putflag;
- short mosreadflag;
- short kanflag;
-
- datalen[0] = 0;
-
- /* ファイルの選択 */
-
- strcpy( filename, selfile() );
- if( strcmp( filename, "データファイル名") == 0 ){
- putmessage( "データファイル閲覧を中止します" );
- return;
- }
-
- /* 項目名の読み込み */
-
- komsize = 0;
- if( ( fp = fopen_kom(filename, "r") ) != NULL ){
- while( fgetx(komdata[komsize], 256, fp ) != NULL )
- komsize++;
- fclose( fp );
- } else {
- puterror( "項目ファイルのオープンに失敗しました" );
- MOS_loop();
- return;
- }
-
- /* 一覧表示する時の一つの項目データの長さを計算 */
-
- putxsize = floor( ( 69 - (komsize - 1) * 2 ) / komsize );
- putysize = floor( 24 / komsize );
-
- for( i = 0; i < komsize; i++ ){
- botton_y[ i * 2 ] = ( 3 + putysize * i ) * 16;
- botton_y[ i * 2 + 1 ] = ( 3 + putysize * i + 1.5 ) * 16;
- }
- for( i = komsize; i < 6; i++ ){
- botton_y[ i * 2 ] = -100;
- botton_y[ i * 2 + 1 ] = -100;
- }
-
-
- /* 表示データ(項目名)の構築 */
-
- ppd = &mosread_data[ 0 ][ 0 ];
- for( i = 1; i <= komsize; i++ ){
- pkn = &komdata[ i - 1 ][ 0 ];
- kanflag = OFF;
- for( j = 1; j <= putxsize; j++ ){
- if( kanflag == ON )
- kanflag = OFF;
- else{
- if( iskanji( *pkn ) )
- kanflag = ON;
- }
- if( *pkn != ( char )0x00 )
- *ppd++ = *pkn++;
- else
- *ppd++ = ( char )0x20;
- }
- if( kanflag == ON )
- *(ppd - 1)= ( char )0x20;
- *ppd++ = ( char )0x20;
- *ppd++ = ( char )0x20;
- }
- *( mosread_data[ 0 ] + 69 ) = ( char )0x00;
-
-
- cardsize = 0;
- if( ( fp = fopen_crd( filename, "r" ) ) != NULL ){
- putmessage( "データ読み込み中" );
- while( fgetx( fwork, 8192, fp ) != NULL ){
- cardsize++;
- datalen[ cardsize ] = strlen( fwork ) + 2;
- }
- fclose( fp );
- } else {
- puterror( "データファイルのオープンに失敗しました" );
- MOS_loop();
- putmessage( "新規作成の場合はデータを一件追加してください" );
- MOS_loop();
- putmessage( "データを追加しますか?" );
- if( MOS_YesNo() == 1 )
- dtuika(filename);
- return;
- }
-
-
- start:
-
- if( ( fp = fopen_crd( filename, "r" ) ) != NULL ){
-
- pagenum = 1;
- putflag = ON;
- mosreadflag = SAVE;
-
- while(1){
-
- if( mosreadflag == SAVE ){
- if( pagenum <= 1 )
- start = 1;
- else{
- start = 2;
- strcpy( mosread_data[1], "前のページへ" );
- }
-
- for( readnum = start; ( fgetx( fwork, 8192, fp ) != NULL ) && ( readnum <= 23 ); readnum++ ){
-
- pcd = &fwork[ 0 ];
- pcd++;
- ppd = &mosread_data[ readnum ][ 0 ];
- for( j = 1; j <= komsize; j++ ){
- kanflag = OFF;
- for( k = 1; k <= putxsize; k++ ){
- if( kanflag == ON )
- kanflag = OFF;
- else{
- if( iskanji( *pcd ) )
- kanflag = ON;
- }
- if( *pcd != ( char )0x22 )
- *ppd++ = *pcd++;
- else
- *ppd++ = ( char )0x20;
- }
- if( kanflag == ON )
- *(ppd - 1)= ( char )0x20;
- *ppd++ = ( char )0x20;
- *ppd++ = ( char )0x20;
- if( j < komsize ){
- while( *pcd != ( char )0x22 )
- pcd++;
- pcd += 3;
- }
- }
- *( mosread_data[ readnum ] + 69 ) = ( char )0x00;
- }
-
- if(--readnum >= 23)
- if(feof(fp) == 0){
- strcpy(mosread_data[24], "次のページへ");
- readnum++;
- }
-
- maketitle( filename, swork, "・一覧モード" );
- g_wintitle( 1, 38, 1, TITCOL, UTICOL, DTICOL, TCHCOL, swork, page0, SOUND_ON );
- g_winbox(1, 2, 38, 28, BOXCOL, UBXCOL, DBXCOL);
- }
-
- if( readnum > 0 )
- ret = MOS_read(2, 4, readnum, mosread_data[0], 70, page0, mosreadflag );
- else {
- puterror( "データが一件もありません" );
- MOS_loop();
- putmessage( "データを追加しますか?" );
- if( MOS_YesNo() == 1 ){
- dtuika(filename);
- fclose( fp );
- goto start;
- } else
- return;
- }
-
- if( ret == Rbotton ){
- ret = selmode( fp, filename );
- switch( ret ){
- case Rbotton: mosreadflag = RESTART;
- break;
- case 3: fclose( fp );
- putmessage( "データ閲覧を終了します" );
- return;
- default: mosreadflag = SAVE;
- break;
- }
- }else{
- if((ret == 24) || ((ret == 1) && (pagenum > 1))){
- if(ret == 24)
- pagenum++;
- else
- pagenum--;
- mosreadflag = SAVE;
- }else{
-
- if(pagenum <= 1){
- cardnum = ret;
- }else{
- cardnum = 23;
- for(i = 3; i <= pagenum; i++)
- cardnum += 22;
- cardnum += ret - 1;
- }
-
- maketitle( filename, swork, "・No." );
- makeNo( cardnum, swork );
- g_wintitle( 1, 38, 1, TITCOL, UTICOL, DTICOL, TCHCOL, swork, page0, SOUND_ON );
-
- ret = Rbotton;
- putflag = ON;
-
- while( ret != END ){
-
- if( putflag == ON ){
-
- offset = 0;
- for(i = 0; i < cardnum; i++)
- offset += datalen[i];
- fseek(fp, offset, SEEK_SET);
-
- /* 表示メッセージの構築 */
-
- if(fgetx(fwork, 8192, fp) != NULL){
- pcd = &fwork[0];
- pcd++;
- for(i = 1; i <= komsize; i++){
- ppd = &carddata[i - 1][0];
- while(*pcd != (char)0x22)
- *ppd++ = *pcd++;
- *ppd = (char)0x00;
- pcd += 3;
- }
- } else {
- puterror( "データが見当たりません" );
- MOS_loop();
- return;
- }
-
- /* データの表示 */
-
- g_winbox(1, 2, 38, 28, BOXCOL, UBXCOL, DBXCOL);
- g_put_nexticn( 2, 26 );
- g_put_backicn( 4.5, 26 );
-
- maketitle( filename, swork, "・No." );
- makeNo( cardnum, swork );
- g_wintitle( 1, 38, 1, TITCOL, UTICOL, DTICOL, TCHCOL, swork, page0, SOUND_OFF );
-
- for(i = 1; i <= komsize; i++){
- put_komdata( &komdata[i - 1][0], i );
- put_carddata( &carddata[i - 1][0], i );
- g_putbotton( i );
- putcard_line[ i - 1 ] = 1;
- }
- }
-
- mos_start();
- while( (ret = mos_sub()) == 0 );
- mos_end();
-
- switch(ret){
- case 2: g_rput_nexticn( 2, 26 );
- if( ++cardnum > cardsize ){
- g_put_nexticn( 2, 26 );
- cardnum = cardsize;
- putflag = OFF;
- } else
- putflag = ON;
- break;
- case 3: g_rput_backicn( 4.5, 26 );
- if( --cardnum < 1 ){
- g_put_backicn( 4.5, 26 );
- cardnum = 1;
- putflag = OFF;
- } else
- putflag = ON;
- break;
- case Rbotton: ret = selmode2( fp, &filename[0], cardnum );
- switch( ret ){
- case Rbotton: putflag = OFF;
- break;
- case 1: cardnum = cardsize;
- putflag = ON;
- break;
- default : putflag = ON;
- break;
- }
- if( ret == 3 || ret == 4 )
- ret = END;
- else
- ret = Rbotton;
- break;
- case 11..22:put_roll_carddata( ret - 10 );
- putflag = OFF;
- break;
- default:
- break;
- }
-
- }
- mosreadflag = SAVE;
- }
- }
-
- /* ファイルのシーク */
- if(pagenum <= 1)
- cardnum = 0;
- else{
- cardnum = 24;
- for(i = 3; i <= pagenum; i++)
- cardnum += 22;
- }
-
- offset = 0;
- for(i = 0; i < cardnum; i++)
- offset += datalen[i];
- fseek(fp, offset, SEEK_SET);
- }
- } else {
- puterror( "データファイルのオープンに失敗しました" );
- return;
- }
- }
-
- void dkensaku( char *filename )
- {
- char search[6][1024];
- char *psd;
- short searlen;
- short skomnum;
- short ekomnum;
- short searchnum[500];
- short searsize;
- char *pfcd;
- char *pcd;
- short cardlen;
- short cardnum;
- short i, j, k;
- FILE *fp;
- short ret;
- short offset;
- short start;
- short pagenum;
- short readnum;
- char *ppd;
- short oakret = 0;
- short putflag;
- short kanflag;
- short mosreadflag;
-
-
- /* タイトルの表示 */
- maketitle( filename, swork, "・検索モード" );
- g_wintitle( 1, 38, 1, TITCOL, UTICOL, DTICOL, TCHCOL, swork, page0, SOUND_ON );
-
- strcpy( swork, "検索データの入力" );
- g_wintitle( 5, 35, 5, TITCOL, UTICOL, DTICOL, TCHCOL, swork, page0, SOUND_ON );
- g_winbox(5, 6, 35, 20, BOXCOL, UBXCOL, DBXCOL);
- g_put_endicn( 6, 18.5 );
-
- for(i = 1; i <= komsize; i++)
- g_putchr2(6, 7 + 2 * (i - 1), CHRCOL, komdata[i - 1], 12 );
-
-
- for( i = 0; i <= (komsize - 1) && (oakret == THRU); i++ ){
- oakret = oakn( 13, (7 + i * 2), 34, 1, search[ i ] );
- g_boxfill( 13, ( 7 + i * 2 ) - 0.5, 34, ( ( 7 + i * 2 ) + 1.5 ), BOXCOL );
- g_putchr2( 13, (7 + i * 2), CHRCOL, search[ i ], 46 );
- }
- if( oakret == BREAK ){
- g_rput_endicn( 6, 18.5 );
- putmessage( "データ検索を中止します" );
- MOS_loop();
- return;
- }
-
- skomnum = 0;
- for( i = 0; i <= ( komsize - 1 ); i++ )
- if( strlen( search[ i ] ) > 0)
- skomnum++;
-
- if( skomnum == 0 ){
- puterror( "検索データが入力されませんでした" );
- MOS_loop();
- return;
- }
-
- if( ( fp = fopen_crd( filename, "r" ) ) != NULL ){
- cardnum = 1;
- searsize = 0;
- putmessage( "検索中" );
- while( fgetx( fwork, 8192, fp ) != NULL ){
- datalen[ cardnum ] = strlen( fwork ) + 2;
- pfcd = &fwork[0];
- pfcd++;
- for( i = 1; i <= komsize; i++ ){
- pcd = &carddata[i - 1][0];
- while( *pfcd != (char)0x22 ){
- *pcd = *pfcd;
- pcd++;
- pfcd++;
- }
- *pcd = (char)0x00;
- pfcd += 3;
- }
- ekomnum = 0;
- for( i = 1; i <= komsize; i++ ){
- if( ( searlen = strlen( &search[i - 1] ) ) > 0 ){
- cardlen = strlen( carddata[i - 1] );
- if( cardlen >= searlen ){
- for( j = 0; j <= ( cardlen - searlen ); j++ ){
- psd = &search[i - 1][0];
- pcd = &carddata[i - 1][j];
- while( ( *psd == *pcd ) && ( *psd != (char)0x00 ) ){
- psd++;
- pcd++;
- }
- if( *psd == (char)0x00 ){
- ekomnum++;
- break;
- }
- }
- }
- }
- }
- if( skomnum == ekomnum ){
- searchnum[searsize] = cardnum;
- searsize++;
- }
- cardnum++;
- }
- fclose( fp );
- } else {
- puterror( "データファイルのオープンに失敗しました" );
- MOS_loop();
- return;
- }
-
- if( searsize == 0 ){
- putmessage( "検索一致データは0件です" );
- MOS_loop();
- return;
- } else
- putmessage( "検索成功" );
-
-
-
- if( ( fp = fopen_crd( filename, "r" ) ) != NULL ){
-
- pagenum = 1;
- cardnum = 0;
- putflag = ON;
- mosreadflag = SAVE;
-
- while(1){
-
- if( mosreadflag == SAVE ){
-
- if( pagenum <= 1 )
- start = 1;
- else{
- start = 2;
- strcpy( mosread_data[1], "前のページへ" );
- }
-
- for( readnum = start; ( cardnum < searsize ) && ( readnum <= 23 ) ; readnum++ ){
-
- cardnum++;
-
- offset = 0;
- for( i = 0; i < searchnum[ cardnum - 1 ]; i++ )
- offset += datalen[ i ];
- fseek( fp, offset, SEEK_SET );
-
- if( fgetx( fwork, 8192, fp ) != NULL ){
-
- pfcd = &fwork[ 0 ];
- pfcd++;
- ppd = &mosread_data[ readnum ][ 0 ];
- for( j = 1; j <= komsize; j++ ){
- kanflag = OFF;
- for( k = 1; k <= putxsize; k++ ){
- if( kanflag == ON )
- kanflag = OFF;
- else{
- if( iskanji( *pfcd ) )
- kanflag = ON;
- }
- if( *pfcd != ( char )0x22 )
- *ppd++ = *pfcd++;
- else
- *ppd++ = ( char )0x20;
- }
- if( kanflag == ON )
- *(ppd - 1)= ( char )0x20;
- *ppd++ = ( char )0x20;
- *ppd++ = ( char )0x20;
- if( j < komsize ){
- while( *pfcd != ( char )0x22 )
- pfcd++;
- pfcd += 3;
- }
- }
- *( mosread_data[ readnum ] + 69 ) = ( char )0x00;
- } else {
- puterror( "データが読み込めません" );
- MOS_loop();
- return;
- }
- }
-
- if(--readnum >= 23)
- if( cardnum < searsize ){
- strcpy(mosread_data[24], "次のページへ");
- readnum++;
- }
- maketitle( filename, swork, "・検索モード" );
- g_wintitle( 1, 38, 1, TITCOL, UTICOL, DTICOL, TCHCOL, swork, page0, SOUND_ON );
- g_winbox(1, 2, 38, 28, BOXCOL, UBXCOL, DBXCOL);
- }
-
- if( readnum > 0 )
- ret = MOS_read(2, 4, readnum, mosread_data[0], 70, page0, mosreadflag );
- else {
- puterror( "検索一致データが無くなりました" );
- MOS_loop();
- return;
- }
-
- if( ret == Rbotton ){
- ret = selmode_k( fp, filename, searsize, searchnum );
- switch( ret ){
- case 1: mosreadflag = SAVE;
- break;
- case 2: putmessage( "検索モードを終了します" );
- return;
- default: mosreadflag = RESTART;
- break;
- }
- }else{
- if((ret == 24) || ((ret == 1) && (pagenum > 1))){
- if(ret == 24)
- pagenum++;
- else
- pagenum--;
- mosreadflag = SAVE;
- }else{
-
- if(pagenum <= 1){
- cardnum = ret;
- }else{
- cardnum = 23;
- for(i = 3; i <= pagenum; i++)
- cardnum += 22;
- cardnum += ret - 1;
- }
-
- maketitle( filename, swork, "・No." );
- makeNo( searchnum[ cardnum - 1 ], swork );
- strcat( swork, "-検索モード" );
- g_wintitle( 1, 38, 1, TITCOL, UTICOL, DTICOL, TCHCOL, swork, page0, SOUND_ON );
-
- ret = Rbotton;
- putflag = ON;
-
- while( ret != END ){
-
- if( putflag == ON ){
-
- offset = 0;
- for(i = 0; i < searchnum[cardnum - 1]; i++)
- offset += datalen[i];
- fseek(fp, offset, SEEK_SET);
-
- /* 表示メッセージの構築 */
-
- if( fgetx( fwork, 8192, fp ) != NULL ){
- pfcd = &fwork[0];
- pfcd++;
- for(i = 1; i <= komsize; i++){
- ppd = &carddata[i - 1][0];
- while(*pfcd != (char)0x22)
- *ppd++ = *pfcd++;
- *ppd = (char)0x00;
- pfcd += 3;
- }
- } else {
- puterror( "データが見当たりません" );
- MOS_loop();
- return;
- }
-
- /* データの表示 */
-
- g_winbox(1, 2, 38, 28, BOXCOL, UBXCOL, DBXCOL);
- g_put_nexticn( 2, 26 );
- g_put_backicn( 4.5, 26 );
-
- maketitle( filename, swork, "・No." );
- makeNo( searchnum[ cardnum - 1 ], swork );
- strcat( swork, " - 検索モード" );
- g_wintitle( 1, 38, 1, TITCOL, UTICOL, DTICOL, TCHCOL, swork, page0, SOUND_OFF );
-
- for(i = 1; i <= komsize; i++){
- put_komdata( &komdata[i - 1][0], i );
- put_carddata( &carddata[i - 1][0], i );
- g_putbotton( i );
- putcard_line[ i - 1 ] = 1;
- }
- }
-
- mos_start();
- while( (ret = mos_sub()) == 0 );
- mos_end();
-
- switch( ret ){
- case 2: g_rput_nexticn( 2, 26 );
- if( ++cardnum > searsize ){
- g_put_nexticn( 2, 26 );
- cardnum = searsize;
- putflag = OFF;
- } else
- putflag = ON;
- break;
- case 3: g_rput_backicn( 4.5, 26 );
- if( --cardnum < 1 ){
- g_put_backicn( 4.5, 26 );
- cardnum = 1;
- putflag = OFF;
- } else
- putflag = ON;
- break;
- case Rbotton: ret = selmode_k2( fp, &filename[0], searchnum[cardnum - 1] );
- switch( ret ){
- case Rbotton: putflag = OFF;
- break;
- case 1: offset = 0;
- for(i = 0; i < searchnum[cardnum - 1]; i++)
- offset += datalen[ i ];
- fseek(fp, offset, SEEK_SET);
- fgetx( fwork, 8192, fp );
- putflag = ON;
- break;
- case 2: memcpy( &searchnum[cardnum - 1], &searchnum[ cardnum ], (searsize - cardnum) * 2 );
- searsize--;
- for( i = cardnum; i <= searsize; i++ )
- searchnum[i - 1]--;
- break;
- default:
- break;
- }
- if( ret == 2 || ret == 3 )
- ret = END;
- else
- ret = Rbotton;
- break;
- case 11..22:put_roll_carddata( ret - 10 );
- putflag = OFF;
- break;
- default:
- break;
- }
- }
- mosreadflag = SAVE;
- }
- }
-
- /* ファイルのシーク */
- if(pagenum <= 1)
- cardnum = 0;
- else{
- cardnum = 24;
- for(i = 3; i <= pagenum; i++)
- cardnum += 22;
- }
-
- offset = 0;
- for(i = 0; i < searchnum[cardnum - 1]; i++)
- offset += datalen[i];
- fseek(fp, offset, SEEK_SET);
- }
- fclose( fp );
- } else {
- puterror( "データファイルのオープンに失敗しました" );
- MOS_loop();
- }
- }
-
-
- void make_newfile( char *filename, short searsize, short *searchnum, short *datalen )
- {
- char newfilename[64];
- FILE *fp;
- FILE *newfp;
- short offset;
- short i, j;
- short oakret;
-
- g_wintitle( 5, 35, 5, TITCOL, UTICOL, DTICOL, TCHCOL, "別ファイル作成", page0, SOUND_ON );
- g_winbox(5, 6, 35, 10, BOXCOL, UBXCOL, DBXCOL);
- g_put_endicn( 6, 8.5 );
- g_putchr(6, 7, CHRCOL, "新データ名" );
- oakret = oakn( 13, 7, 34, 1, newfilename );
-
- if( oakret == BREAK ){
- g_rput_endicn( 6, 8.5 );
- putmessage( "別ファイル作成を中止します" );
- MOS_loop();
- return;
- }
-
- if( ( fp = fopen_crd( newfilename, "r" ) ) == NULL ){
-
- putmessage( "新ファイル作成中" );
-
- makepath( fwork );
- strcat( fwork, "FILENAME.CRD" );
- if( ( fp = fopen( fwork, "a" ) ) != NULL ){
- fputx( newfilename, fp );
- fclose( fp );
- }else {
- puterror( "新ファイル作成に失敗しました" );
- MOS_loop();
- return;
- }
-
- if( ( ( fp = fopen_kom( filename, "r" ) ) != NULL ) && ( ( newfp = fopen_kom( newfilename, "w" ) ) != NULL ) ){
- while( fgetx( fwork, 8192, fp ) != NULL )
- fputx( fwork, newfp );
- fclose( fp );
- fclose( newfp );
- } else {
- if( fp != NULL )
- fclose( fp );
- else
- fclose( newfp );
- puterror( "新ファイル作成に失敗しました" );
- MOS_loop();
- return;
- }
-
- if( ( ( fp = fopen_crd( filename, "r" ) ) != NULL ) && ( ( newfp = fopen_crd( newfilename, "w" ) ) != NULL ) ){
- for( i = 1; i <= searsize; i++ ){
- offset = 0;
- for( j = 0; j < *searchnum; j++ )
- offset += *( datalen + j );
- fseek( fp, offset, SEEK_SET );
- if( fgetx( fwork, 8192, fp ) != NULL ){
- fputx( fwork, newfp );
- } else {
- puterror( "新ファイル作成に失敗しました" );
- MOS_loop();
- return;
- }
- searchnum++;
- }
- fclose( fp );
- fclose( newfp );
- } else {
- if( fp != NULL )
- fclose( fp );
- else
- fclose( newfp );
- puterror( "新ファイル作成に失敗しました" );
- MOS_loop();
- return;
- }
-
- putmessage( "新ファイルを作成しました" );
- MOS_loop();
-
- } else {
- fclose( fp );
- puterror( "同一ファイル名が存在します" );
- MOS_loop();
- putmessage( "新データ名を変更してください" );
- MOS_loop();
- return;
- }
- }
-
-
- void fshinki()
- {
- char newdataname[128];
- char pathname[64];
- char num[9][3] = { {"1"},{"2"},{"3"},{"4"},{"5"},{"6"},{"7"},{"8"},{"9"} };
-
- short mojilen = 1;
- short i;
- short oakret;
- FILE *fp;
-
- strcpy(swork, "データの新規登録");
- g_wintitle(5, 30, 5, TITCOL, UTICOL, DTICOL, TCHCOL, swork, page0, SOUND_ON);
- g_winbox(5, 6, 30, 22, BOXCOL, UBXCOL, DBXCOL);
- g_put_endicn( 6, 20.5 );
-
- /* データ名の入力 */
- strcpy(swork, "データ名");
- g_putchr(6, 7, CHRCOL, swork);
- oakret = oakn(11, 7, 29, 1, newdataname );
- g_boxfill( 11, 7 - 0.5, 29, 7 + 1.5, BOXCOL );
- g_putchr2( 11, 7, CHRCOL, newdataname, 40 );
-
- if( oakret == BREAK ){
- g_rput_endicn( 6, 20.5 );
- putmessage( "データファイル作成を中止します" );
- return;
- }
-
- if( strlen( newdataname ) == 0 ){
- puterror( "データ名が入力されませんでした" );
- return;
- }
-
- makepath( pathname );
- strcat( pathname, "FILENAME.CRD" );
- if( ( fp = fopen( pathname,"r" ) ) != NULL ){
- while( fgetx( fwork, 8192, fp ) ){
- if( strncmp( newdataname, fwork, 8 ) == 0 ){
- puterror( "同一ファイル名が存在します" );
- fclose( fp );
- return;
- }
- }
- fclose( fp );
- } else {
- puterror( "設定ファイル名のオープンに失敗しました" );
- return;
- }
-
-
-
- /* 項目名の入力 */
- for(i = 0; (i <= 5) && (mojilen > 0) && (oakret == THRU); i++){
- strcpy(swork, "項目名");
- strcat(swork, num[i]);
- g_putchr(7, (9 + i*2), CHRCOL, swork);
- oakret = oakn(11, (9 + i*2), 29, 1, &komdata[i][0]);
- g_boxfill( 11, ( 9 + i * 2 ) - 0.5, 29, ( ( 9 + i * 2 ) + 1.5 ), BOXCOL );
- g_putchr2( 11, ( 9 + i * 2 ), CHRCOL, komdata[ i ], 38 );
- mojilen = strlen( &komdata[i][0] );
- }
-
- if( oakret == BREAK ){
- g_rput_endicn( 6, 20.5 );
- putmessage( "データファイル作成を中止します" );
- return;
- }
-
- /* BOXの消去 */
- if(mojilen == 0){
- komsize = --i;
- WORD(para + 0) = 6 * 16;
- WORD(para + 2) = (9 + i*2) * 16 - 8;
- WORD(para + 4) = (29 + 1) * 16;
- WORD(para + 6) = (10 + i*2) * 16 + 8;
- EGB_color( work, 0, BOXCOL );
- EGB_color( work, 2, BOXCOL );
- EGB_rectangle(work, para);
- }else
- komsize = i;
-
- if( komsize == 0 ){
- puterror( "項目名を一つも入力していません" );
- MOS_loop();
- return;
- }
-
- putmessage( "新規データ登録中" );
-
- /* ファイルのオープン1 */
- makepath( pathname );
- strcat( pathname, "FILENAME.CRD" );
- if( ( fp = fopen( pathname,"a" ) ) != NULL ){
- fputx( newdataname, fp );
- fclose( fp );
- } else {
- puterror( "新規ファイル名の保存に失敗しました" );
- MOS_loop();
- }
-
- /* ファイルのオープン2 */
- if( ( fp = fopen_kom( newdataname, "w" ) ) != NULL ){
- for( i = 1; i <= komsize; i++ )
- fputx( komdata[i - 1], fp );
- fclose( fp );
- } else {
- puterror( "項目ファイルの作成に失敗しました" );
- MOS_loop();
- }
-
- /* ファイルのオープン3 */
- if( ( fp = fopen_crd( newdataname, "w" ) ) != NULL )
- fclose( fp );
- else {
- puterror( "データファイルの作成に失敗しました" );
- MOS_loop();
- }
- }
-
- void fsakujyo()
- {
- char del_dataname[128];
- char read_dataname[128];
- char new_filename[128];
- FILE *newfp;
- char old_filename[128];
- FILE *oldfp;
- char tmp_filename[128];
- char del_filename[128];
-
- putmessage( "削除するデータファイルを選んでください" );
-
- strcpy( del_dataname, selfile() );
- if( strcmp( del_dataname, "データファイル名") == 0 ){
- putmessage( "データファイル削除を中止します" );
- return;
- }
-
- strcpy( swork, "データファイル(" );
- strcat( swork, del_dataname );
- strcat( swork, ")を削除しますか?" );
- putmessage( swork );
-
- if( MOS_YesNo() == 1 ){
-
- makepath( tmp_filename );
- strcat( tmp_filename, "FILENAME.CRD" );
-
- makepath( old_filename );
- strcat( old_filename, "FILENAME.CRO" );
-
- if( rename( tmp_filename, old_filename) == 0){
- strcpy(new_filename, tmp_filename);
- if( ( oldfp = fopen( old_filename, "r" ) ) != NULL &&
- ( newfp = fopen( new_filename, "w" ) ) != NULL ){
-
- while( fgetx( read_dataname, 128, oldfp ) != NULL ){
- if( strcmp( read_dataname, del_dataname ) )
- fputx( read_dataname, newfp );
- }
- fclose( oldfp );
- fclose( newfp );
-
- remove( old_filename );
-
- makepath( del_filename );
- makefilename( del_filename, del_dataname );
- strcat( del_filename, ".KOM" );
- remove( del_filename );
-
- makepath( del_filename );
- makefilename( del_filename, del_dataname );
- strcat( del_filename, ".CRD" );
- remove( del_filename );
-
- strcpy( swork, "データファイル(" );
- strcat( swork, del_dataname );
- strcat( swork, ")を削除しました" );
- putmessage( swork );
- MOS_loop();
-
- } else {
- puterror( "データファイルの削除に失敗しました" );
- MOS_loop();
- }
- } else {
- puterror( "データファイルの削除に失敗しました" );
- MOS_loop();
- }
- }
- }
-
- short selmode(FILE *fp, char *filename )
- {
- short ret;
- char msg[4][20] = {"Command", "データ追加", "データ検索", "データ閲覧終了" };
-
- ret = MOS_read( 27.5, 3.5, 3, msg[0], 20, page1, NEW );
-
- switch(ret){
- case 1: fclose( fp );
- dtuika( filename );
- fp = fopen_crd( filename, "r" );
- break;
- case 2: fclose( fp );
- dkensaku( filename );
- fp = fopen_crd( filename, "r" );
- break;
- default:
- break;
- }
-
- return ret;
- }
-
- short selmode2(FILE *fp, char *filename, short cardnum )
- {
- char msg[5][20] = {"Command", "データ追加", "データ修正",
- "データ削除", "データ一覧" };
- short ret;
- short tret;
- short delret;
-
- ret = MOS_read(27.5, 3.5, 4, msg[0], 20, page1, NEW );
-
- switch(ret){
- case 1: fclose(fp);
- tret = dtuika(filename);
- fp = fopen_crd( filename, "r" );
- break;
- case 2: fclose(fp);
- dsyusei(filename, cardnum, &carddata[0][0]);
- fp = fopen_crd( filename, "r" );
- break;
- case 3: fclose( fp );
- delret = dsakujyo(filename, cardnum);
- if( delret == BREAK )
- ret = 2;
- fp = fopen_crd( filename, "r" );
- break;
- default:
- break;
- }
-
- if( ret == 1 && tret == BREAK )
- ret = 2;
-
- if( ret != Rbotton ){
- maketitle( filename, swork, "・一覧モード" );
- g_wintitle( 1, 38, 1, TITCOL, UTICOL, DTICOL, TCHCOL, swork, page0, SOUND_ON );
- }
-
- return ret;
- }
-
- short selmode_k( FILE *fp, char *filename, short searsize, short *searchnum )
- {
- char msg[3][20] = {"Command", "別ファイル作成", "検索モード終了"};
- short ret;
-
- ret = MOS_read( 27.5, 3.5, 2, msg[0], 20, page1, NEW );
-
- switch(ret){
- case 1: fclose( fp );
- make_newfile( filename, searsize, searchnum, datalen );
- fp = fopen_crd( filename, "r" );
- break;
- default:
- break;
- }
-
- maketitle( filename, swork, "・検索モード" );
- g_wintitle( 1, 38, 1, TITCOL, UTICOL, DTICOL, TCHCOL, swork, page0, SOUND_ON );
-
- return ret;
- }
-
- short selmode_k2(FILE *fp, char *filename, short cardnum )
- {
- char msg[4][20] = {"Command", "データ修正", "データ削除", "データ一覧"};
- short ret;
- short delret;
-
- ret = MOS_read(27.5, 3.5, 3, msg[0], 20, page1, NEW );
-
- switch(ret){
- case 1: fclose( fp );
- dsyusei( filename, cardnum, &carddata[0][0] );
- fp = fopen_crd( filename, "r" );
- break;
- case 2: fclose( fp );
- delret = dsakujyo( filename, cardnum );
- if( delret == BREAK )
- ret = 1;
- fp = fopen_crd( filename, "r" );
- break;
- default:
- break;
- }
-
- maketitle( filename, swork, "・検索モード" );
- g_wintitle( 1, 38, 1, TITCOL, UTICOL, DTICOL, TCHCOL, swork, page0, SOUND_ON );
-
- return ret;
- }
-
- short dtuika(char *filename)
- {
- char newdata[6][1024];
- short i, mojilen;
- int oakret = 0;
- FILE *fp;
-
- maketitle( filename, swork, "・追加モード" );
- g_wintitle( 1, 38, 1, TITCOL, UTICOL, DTICOL, TCHCOL, swork, page0, SOUND_ON );
- g_winbox(1, 2, 38, 28, BOXCOL, UBXCOL, DBXCOL);
- g_put_endicn( 2, 26 );
-
- for(i = 0; i <= (komsize - 1); i++)
- put_komdata( &komdata[ i ][ 0 ], i + 1 );
-
- for( i = 0; i <= (komsize - 1) && ( oakret == THRU ); i++ ){
- oakret = oakn( 12, (3 + i * putysize), 37, putysize, newdata[i] );
- g_boxfill( 12, ( 3 + i * putysize ) - 0.25, 37.5, ( ( 3 + i * putysize ) + ( putysize - 1 ) + 0.25 ), BOXCOL );
- if( i > 0 )
- put_carddata( &newdata[ i - 1 ][ 0 ], i);
- put_carddata( &newdata[ i ][ 0 ], i + 1 );
- }
- if( oakret == BREAK ){
- g_rput_endicn( 2, 26 );
- putmessage( "データ追加を中止します" );
- MOS_loop();
- return BREAK;
- }
-
- putmessage( "データ追加作業中" );
-
- /* 入力データを全引用付形式に変換してファイルに保存 */
- if( ( fp = fopen_crd( filename, "a" ) ) != NULL ){
- *(fwork + 0) = (char)0x22;
- *(fwork + 1) = (char)0x00;
- for(i = 0; i <= (komsize - 1); i++){
- strcat(fwork, newdata[i]);
- mojilen = strlen(fwork);
- *(fwork + mojilen) = (char)0x22;
- if(i < (komsize - 1)){
- *(fwork + mojilen + 1) = (char)0x2c;
- *(fwork + mojilen + 2) = (char)0x22;
- *(fwork + mojilen + 3) = (char)0x00;
- }else
- *(fwork + mojilen + 1) = (char)0x00;
- }
- fputx(fwork, fp);
- fclose(fp);
-
- cardsize++;
- datalen[ cardsize ] = strlen( fwork ) + 2;
-
- putmessage( "入力データを登録しました" );
- MOS_loop();
- return THRU;
- } else {
- puterror( "入力データのファイルへの保存に失敗しました" );
- MOS_loop();
- return BREAK;
- }
-
- }
-
- void dsyusei(char *filename, short cardnum, char *olddata)
- {
- char newdata[6][1024];
- short hennum;
- short i, mojilen;
- char putdata[8192];
- char old_filenam[64];
- FILE *oldfp;
- char new_filenam[64];
- FILE *newfp;
- char tmp_filename[64];
- short readnum;
- int cmp;
- short oakret = 0;
-
- for( i = 0; i <= (komsize - 1); i++ )
- strcpy( newdata[ i ], olddata + ( i * 1024 ) );
-
- maketitle( filename, swork, "・No." );
- makeNo( cardnum, swork );
- strcat( swork, " - 修正モード" );
- g_wintitle( 1, 38, 1, TITCOL, UTICOL, DTICOL, TCHCOL, swork, page0, SOUND_ON );
- g_winbox(1, 2, 38, 28, BOXCOL, UBXCOL, DBXCOL);
- g_put_endicn( 2, 26 );
-
- for( i = 1; i <= komsize; i++ ){
- put_komdata( &komdata[ i - 1 ][ 0 ], i );
- put_carddata( olddata + ( i - 1 ) * 1024, i );
- }
-
- for( i = 0; i <= (komsize - 1) && ( oakret == THRU ); i++ ){
- oakret = oaks( 12, (3 + i * putysize), 37, putysize, newdata[i] );
- g_boxfill(12, ( 3 + i * putysize ) - 0.25, 37.5, ( ( 3 + i * putysize ) + (putysize - 1 ) + 0.25 ), BOXCOL);
- if( i > 0 )
- put_carddata( &newdata[ i - 1 ][ 0 ], i);
- put_carddata( &newdata[ i ][ 0 ], i + 1);
- }
-
- if( oakret == BREAK ){
- g_rput_endicn( 2, 26 );
- putmessage( "データ修正を中止します" );
- MOS_loop();
- return;
- }
-
- hennum = 0;
- for( i = 0; i <= (komsize - 1); i++ ){
- cmp = strcmp( newdata[ i ], olddata + ( i * 1024 ) );
- if( cmp != 0 )
- hennum++;
- }
- if( hennum == 0 ){
- puterror( "データが変更されていません" );
- MOS_loop();
- return;
- }
-
- putmessage( "データ修正作業中" );
-
- /* 入力データを全引用付形式に変換 */
-
- *( putdata + 0 ) = ( char )0x22;
- *( putdata + 1 ) = ( char )0x00;
- for( i = 0; i <= ( komsize - 1 ); i++ ){
- strcat( putdata, newdata[ i ] );
- mojilen = strlen( putdata );
- *( putdata + mojilen ) = ( char )0x22;
- if( i < (komsize - 1) ){
- *( putdata + mojilen + 1 ) = ( char )0x2c;
- *( putdata + mojilen + 2 ) = ( char )0x22;
- *( putdata + mojilen + 3 ) = ( char )0x00;
- }else
- *( putdata + mojilen + 1 ) = ( char )0x00;
- }
-
- /* ファイルに保存 */
-
- makepath( tmp_filename );
- strncat( tmp_filename, filename, 8 );
- strcat( tmp_filename, ".CRD" );
-
- makepath( old_filenam );
- strncat( old_filenam, filename, 8 );
- strcat( old_filenam, ".CRO" );
-
- if( rename( tmp_filename, old_filenam) == 0){
- readnum = 1;
- strcpy(new_filenam, tmp_filename);
- if( ( oldfp = fopen( old_filenam, "r" ) ) != NULL &&
- ( newfp = fopen( new_filenam, "w" ) ) != NULL ){
-
- while( fgetx( fwork, 8192, oldfp ) != NULL ){
- if( cardnum == readnum )
- fputx( putdata, newfp );
- else
- fputx( fwork, newfp );
- readnum++;
- }
- fclose( oldfp );
- fclose( newfp );
- remove( old_filenam );
-
- datalen[ cardnum ] = strlen( putdata ) + 2;
-
- putmessage( "データを修正しました" );
- MOS_loop();
-
- } else {
- puterror( "データの修正に失敗しました" );
- MOS_loop();
- }
- } else {
- puterror( "データの修正に失敗しました" );
- MOS_loop();
- }
- }
-
-
- short dsakujyo( char *filename, short cardnum )
- {
- FILE *oldfp;
- char old_filenam[128];
- FILE *newfp;
- char new_filenam[128];
- char tmp_filename[128];
- short readnum;
- short ret;
-
- putmessage( "このデータを削除しますか?" );
- ret = MOS_YesNo();
-
- if( ret == 1 ){
- maketitle( filename, swork, "・削除モード" );
- g_wintitle( 1, 38, 1, TITCOL, UTICOL, DTICOL, TCHCOL, swork, page0, SOUND_ON );
- putmessage( "データ削除作業中" );
-
- /* ファイルのデータを削除 */
-
- makepath( tmp_filename );
- strncat( tmp_filename, filename, 8 );
- strcat( tmp_filename, ".CRD" );
-
- makepath( old_filenam );
- strncat( old_filenam, filename, 8 );
- strcat( old_filenam, ".CRO" );
-
- if( rename( tmp_filename, old_filenam) == 0){
- readnum = 1;
- strcpy(new_filenam, tmp_filename);
- if( ( oldfp = fopen( old_filenam, "r" ) ) != NULL &&
- ( newfp = fopen( new_filenam, "w" ) ) != NULL ){
-
- while( fgetx( fwork, 8192, oldfp ) != NULL ){
- if( cardnum != readnum )
- fputx( fwork, newfp );
- readnum++;
- }
-
- fclose( oldfp );
- fclose( newfp );
- remove( old_filenam );
-
- cardsize--;
- memcpy( &datalen[ cardnum ], &datalen[ cardnum + 1], (1000 - cardnum ) * 2 );
-
- putmessage( "データを削除しました" );
- MOS_loop();
- } else {
- puterror( "データの削除に失敗しました" );
- MOS_loop();
- }
- } else {
- puterror( "データの削除に失敗しました" );
- MOS_loop();
- }
- return THRU;
- } else {
- putmessage( "データを削除しません" );
- MOS_loop();
- return BREAK;
- }
- }
-
-
-
- char *selfile()
- {
- char filename[25][128];
- char selfilename[25][32];
- char pathname[128];
- short filenum, i;
- FILE *fp;
- short ret;
-
- strcpy( filename[0], "データファイル名" );
- strcpy( selfilename[0], "データファイル名" );
-
- makepath( pathname );
- strcat( pathname, "FILENAME.CRD" );
- if( ( fp = fopen( pathname, "r" ) ) != NULL ){
- for( i = 1; fgetx( filename[ i ], 128, fp ) != NULL; i++ )
- strncpy( selfilename[ i ], filename[ i ], 30 );
- filenum = i - 1;
- fclose( fp );
- }else {
- strcpy( swork, "ファイル(" );
- strcat( swork, pathname );
- strcat( swork , ")がオープンできません" );
- puterror( swork );
- MOS_loop();
- main2();
- }
-
- if( filenum > 0 ){
- ret = MOS_read(5, 5, filenum, selfilename[0], 32, page0, NEW );
- if( ret < 0 )
- ret = 0;
- } else {
- puterror( "データファイルが一つもありません" );
- MOS_loop();
- ret = 0;
- }
-
-
- return filename[ret];
- }
-
-
-
- void init()
- {
- FILE *fp;
- char *env;
- short ret;
- char bankname[8];
-
- SND_init( sndwork );
- SND_elevol_init();
- SND_elevol_mute( 3 );
-
- EGB_init( work, 1536 );
- EGB_resolution( work, 0, 0x43 ) ;
- EGB_resolution( work, 1, 0x43 ) ;
- EGB_displayPage( work, 1, 3 );
- EGB_paintMode( work, 0x22 );
- WORD( para + 0 ) = 0;
- WORD( para + 2 ) = 0;
- WORD( para + 4 ) = 639;
- WORD( para + 6 ) = 479;
- EGB_color( work, 0, BAKCOL );
- EGB_color( work, 2, BAKCOL );
- EGB_rectangle( work, para );
-
- soundflag = OFF;
- putmessage( "FM音源データファイルを読み込みます" );
- if( SND_fm_bank_load( "q:\\fj\\fm\\fmp_hard.fmb", bankname ) )
- puterror( "FM音源データファイルが見当たりません" );
- else
- soundflag = ON;
-
- if( ( env = getenv( "DABE" ) ) != NULL ){
- strcpy( swork, "環境変数は" );
- strcat( swork, env );
- strcat( swork, "に設定されてます" );
- putmessage( swork );
- strcpy( fenv, env );
- } else {
- putmessage( "環境変数は設定されていません" );
- strcpy( fenv, "a:" );
- }
- strcat( fenv, "\\FILESTAT.DAT" );
-
- putmessage( "環境設定ファイルを読み込みます" );
- if( ( fp = fopen( fenv, "r" ) ) != NULL ){
- fgetx( drive, 4, fp );
- fgetx( path, 32, fp );
- strcpy( swork, "ドライブ" );
- strcat( swork, drive );
- strcat( swork, "、パス" );
- strcat( swork, path );
- strcat( swork, "に設定されています" );
- putmessage( swork );
- fclose( fp );
- } else {
- puterror( "環境設定ファイルが見つかりません" );
- MOS_loop();
- putmessage( "環境設定ファイルを作成しますか?" );
- ret = MOS_YesNo();
- if( ret == 1 ){
- strcpy( drive, "a:" );
- strcpy( path, "\\" );
- if( ( fp = fopen( fenv, "w" ) ) != NULL ){
- fputx( drive, fp );
- fputx( path, fp );
- fclose( fp );
- strcpy( swork, "環境設定ファイル(" );
- strcat( swork, fenv );
- strcat( swork, ")を、A:¥に作成しました" );
- putmessage( swork );
- }else
- puterror( "環境設定ファイルの作成に失敗しました" );
- } else {
- putmessage( "環境変数を設定し直し再起動してください" );
- MOS_loop();
- puterror( "ドライブ、パス名が未設定です" );
- }
- }
-
- return;
-
- }
-
- void end()
- {
- putmessage( "終了します" );
-
- SND_elevol_mute( 0 );
- SND_end();
- exit( 1 );
- }
-
- short oakn(short x1, short y1, short x2, short line, char *sret) /* oakで入力 */
- {
- /************************************************************************/
- /* i x1 == 入力領域の開始x座標(16ドット単位) */
- /* i x2 == 入力領域の終了x座標(16ドット単位) */
- /* i y1 == 入力領域の開始y座標(16ドット単位) */
- /* i x2 == 入力領域の終了y座標(16ドット単位) */
- /* c *sret == 入力された文字を返す領域のアドレス */
- /************************************************************************/
-
- char ch;
-
- g_wintitle(32.5, 38.5, 27.5, TITCOL, UTICOL, DTICOL, TCHCOL, "oak", page0, SOUND_OFF );
-
- init_charmap();
- KYB_clrbuf();
-
- cmwork( mwork );
- MOS_start( mwork, 4096 );
- MOS_resolution( 1, 3 );
- MOS_horizon( 0, 639 );
- MOS_vertical( 0, 479 );
- MOS_setpos( ox, oy );
- getcurbak( ox, oy );
- putcur( ox, oy );
-
- wind(x1*16, y1*16-3, x2*16+3, (y1 + line)*16+4, CHRCOL, BOAKCOL, COAKCOL, 8, 17, 0x00);
- KAN_open( putstr,putsys,putmode);
-
- while ( (ch = getch()) != CR && ch != ESC ) {
- putch(ch);
- cflush();
- }
- cur_dsp(1);
-
- KAN_close();
-
- putcurbak( ox, oy );
- MOS_end();
-
- getstr( sret );
-
- if( ch == CR )
- return THRU;
- else {
- g_rput_endicn( event1_x, event1_y );
- return BREAK;
- }
- }
-
- short oaks(short x1, short y1, short x2, short line, char *sret) /* oakで入力 */
- {
- /************************************************************************/
- /* i x1 == 入力領域の開始x座標(16ドット単位) */
- /* i x2 == 入力領域の終了x座標(16ドット単位) */
- /* i y1 == 入力領域の開始y座標(16ドット単位) */
- /* i x2 == 入力領域の終了y座標(16ドット単位) */
- /* c *sret == 入力された文字を返す領域のアドレス */
- /************************************************************************/
-
- char ch;
- char *psr = sret;
-
- g_wintitle(32.5, 38.5, 27.5, TITCOL, UTICOL, DTICOL, TCHCOL, "oak", page0, SOUND_OFF );
-
- init_charmap();
- KYB_clrbuf();
-
- cmwork( mwork );
- MOS_start( mwork, 4096 );
- MOS_horizon( 0, 639 );
- MOS_vertical( 0, 479 );
- MOS_setpos( ox, oy );
- getcurbak( ox, oy );
- putcur( ox, oy );
-
- wind(x1*16, y1*16-3, x2*16+3, (y1 + line)*16+4, CHRCOL, BOAKCOL, COAKCOL, 8, 17, 0x00);
- KAN_open(putstr,putsys,putmode);
-
- if( INS_STAT == ON ){
- INS_STAT = OFF;
- while ( *psr != 0x00 ) {
- putch( *psr );
- cflush();
- psr++;
- }
- INS_STAT = ON;
- } else {
- while ( *psr != 0x00 ) {
- putch( *psr );
- cflush();
- psr++;
- }
- }
-
- while ( (ch = getch()) != CR && ch != ESC ) {
- putch(ch);
- cflush();
- }
-
- cur_dsp(1);
-
- KAN_close();
-
- putcurbak( ox, oy );
- MOS_end();
-
-
- getstr( sret );
-
- if( ch == CR )
- return THRU;
- else{
- g_rput_endicn( event1_x, event1_y );
- return BREAK;
- }
- }
-
- short put_oakcur()
- {
- int ch, x, y;
-
- MOS_rdpos( &ch, &x, &y );
-
- if( ( x != ox ) || ( y != oy ) ){
- putcurbak( ox, oy );
- getcurbak( x, y );
- putcur( x, y );
- }
- ox = x;
- oy = y;
-
- if( (ch == 1) && (x >= event1_x) && (x <= (event1_x + 31)) && (y >= event1_y) && (y <= (event1_y + 31)) ){
- BPB_freeon2( 10, 1500 );
- return 1;
- } else
- return 0;
-
- }
-
-
- void maketitle( char *filename, char *str, char *mode )
- {
- strcpy( str, filename );
- strcat( str, "(" );
- strcat( str, drive );
- strcat( str, path );
- strcat( str, ")" );
- strcat( str, mode );
- }
-
- void makeNo( short number, char *str )
- {
- char num[10][3] = { {"0"},{"1"},{"2"},{"3"},{"4"},{"5"},{"6"},{"7"},{"8"},{"9"} };
- short subnum;
- short floornum;
- short charflag;
-
- charflag = OFF;
- subnum = 1000;
- while( subnum >= 1){
- floornum = floor( number / subnum );
- if( floornum > 0 || ( floornum == 0 && charflag == ON ) ){
- charflag = ON;
- strcat( str, num[ floornum ] );
- }
- number -= floornum * subnum;
- subnum /= 10;
- }
-
- }
-
-